1. The Field of the Invention
This invention relates to information servers, and, more specifically, this invention relates to a mechanism for administering and configuring an information server that dramatically reduces the administrative burden.
2. The Prior State of the Art
Today, business and technology trends are changing the way we use computers and information. The personal computer of PC has become the standard business information tool as prices have decreased and computing power has increased. In record numbers, business are re-engineering their organizational structure and processes to become faster and more competitive, in addition to being better able to use the wealth of information resources available today. Never before has there been so much information so readily available nor such high expectations for how much the individual will be able to accomplish by utilizing this information. The result is that people today need access to information everywhere, anytime.
The need for access to information and the widespread availability of information has been aided and encouraged by the growth of large-scale computer networks such as the Internet. Through the Internet, users can access a wide variety of information and have the information delivered and displayed to their screens almost immediately. With the proliferation of the Internet and Internet related and inspired technologies, many businesses and corporations are modeling in-house information networks, called intranets, after the model used by the Internet. The result is that users today have more access to more different types of information than ever before.
To supply information over these networks, various types of information servers have been developed. These information servers are designed to receive a request for information from a client, retrieve the desired information, and pass the information back to the requesting client. In the case if the Internet and/or intranets, information is generally stored in a variety of standard formats that may be retrieved and provided to the requesting client. The type of format used to store the data depends in large measure upon the type of information server and the purpose of the information server. For example, information servers designed to provide information to various web browsers over the Internet often store and provide information in a Hypertext Markup Language (HTML). On the other hand, a server providing information via the Internet File Transfer Protocol (FTP) may store information in a wide variety of formats suitable for downloading by a requesting client. Other types of information servers such as mail servers, news servers, and so forth, also abound.
Although each of these various types of information servers has unique requirements, at some level all such information servers require the ability to retrieve information in a desired format and provide the information to a requesting client. In order to achieve this goal, many information servers must store a wide variety of configuration and other data. For example, many information servers are customizable in a wide variety of ways. The various customization information must be stored for each particular installation. Such configuration information may range from configuration information regarding the specific hardware environment, protocols used to communicate with clients and service client requests, configuration information relating to the specific information stored on the information server, and many other types of configuration information.
Traditionally, such configuration information was stored in text-based files referred to on various systems as "INI" files, "CONF" files, or "RE" files. These INI files were typically formatted according to some identified format, for example, a parameter identifier followed by the value of the parameter. When the information server was initialized, the information server would go to the appropriate INI file, read the text-based information contained therein, parse the text-based information to extract the appropriate configuration information, and apply the configuration information. As explained below, dynamic configuration was rare and the system often had to be restarted as changes were made.
Such an approach worked relatively well for information servers that provided a small amount of information or that were customizable in a limited number of ways. However, as the amount of information available from a particular information server has increased and as the contexts in which an information server must operate has diversified, the amount and type of configuration information has dramatically increased. This dramatic increase has created several problems for traditional configuration mechanisms.
One problem with using text-based INI files to configure and administer an information server is highlighted by the amount of information that must be stored when the amount of information serviced by the server increases. As one example, web servers may provide ratings for each of the web pages accessible from the server. These ratings rate the information content of a web page or other information object so that individuals may screen out objectionable material. An information server that supports ratings must, therefore, maintain rating information on each and every information object that can be accessed via the information server. Such rating information may be compiled into a single large INI file or may be stored in separate INI files, each associated with an appropriate information object. When an administrator wishes to update rating information, the administrator must change the information in the appropriate INI file. For a large number of information objects, this task can be tedious and is fraught with error. For example, if the entire rating of one particular subtree of an information server is changed, then the rating for each and every information object in that subtree must be identified and updated. It would, therefore, be highly desirable to provide a mechanism that reduces the administrative burden in updating configuration information that applies to large groups of information objects. It would also be highly desirable to reduce or eliminate the probability of errors associated with such changes.
Another problem with text-based INI files can be illustrated by the following scenario. Suppose configuration information is stored in a single, large INI file. Now suppose that the administrator wishes to make a modification to a portion of the information in the INI file. After the administrator has completed the desired changes, a mechanism must exist for making the information server aware of the changes that have been made. In some systems, this necessitates stopping the information server and reinitializing the information server. Such a reinitialization may be as simple as stopping and restarting a program or as complicated as shutting down an entire system and rebooting the entire system, causing service outages. Such a mechanism is highly undesirable if configuration information is changed on a relatively frequent basis. It would, therefore, be an advancement in the art to eliminate the necessity of reinitializing an information server when configuration changes are made.
In order to eliminate the need to reinitialize an information server, mechanisms may be put in place that cause the information server to return to the text file and reread all the configuration parameters. The server can reparse the text file and extract the appropriate configuration information. Such an approach may work for certain types of configuration changes. However, such an approach still requires the information server to reread and reparse all entries in the text file in order to identify which information in the file has changed. This still represents a rather cumbersome process. It would be an advancement in the art to obviate the necessity of rereading and reparsing configuration files to determine which configuration parameters have been modified. It would be a further advancement in the art to allow all such configuration changes to be made without reparsing an entire INI file and without requiring any stopping and starting of the information server.
In order to eliminate the need to reread and reparse text-based INI files whenever configuration parameters are needed, most existing information servers keep as much of the configuration information in memory as possible. For example, if rating information is utilized, it is desirable to maintain the rating information for the associated information objects in memory so as to eliminate the necessity of retrieving text from an INI file and parsing the retrieved information to extract the configuration information. As the number of information objects provided by an information server increases and as the variety and type of configuration information proliferates, keeping all such information in memory becomes a difficult task. Furthermore, the amount of non-volatile storage space and the initialization time also increases. It would, therefore, be highly desirable to reduce the amount of information that needs to remain in memory in order to configure an information server while, simultaneously, reducing the necessity of retrieving information from INI files that must be parsed to extract the desired configuration information. It would also be highly desirable to reduce the amount of non-volatile storage required to store such information and to reduce the time required to initialize an information server.